package role;


import engine.Equipment;

import java.util.Objects;

import java.io.Serializable;

public class Creature implements Serializable {

    public String name;     // 玩家和敌人都有名字
    public String role;     // 玩家和敌人都有角色
    public int level;       // 玩家和敌人都有等级
    public int power;       //都有力量
    public int intelligence;    //都有智力
    public int agile;       //都有敏捷
    public int defense;     //都有防御值
    public int maxHp;       // 玩家和敌人都有最大血量
    public int curHp;       // 玩家和敌人都有当前血量
    public int attack;      // 玩家和敌人都有攻击力




    public Creature() {
    }

    public Creature(String name, String role, int level) {
        this.name = name;
        this.role = role;
        this.level = level;
        initialize();
    }

    /**
     * 攻击另一个生物，可以是玩家攻击敌人，也可以是敌人攻击玩家。
     * 攻击力 - 防御力 = 伤害值
     * @param other 被攻击的生物
     * @return 本次攻击造成的伤害值
     */
    public int attack(Creature other) {
        int damage = attack - other.defense;
        if (damage <= 0){
            damage = 1;
        }
        other.curHp -= damage;
        return damage;
    }
    /**
     * 技能
     *
     * @param other 被攻击的生物
     * @return 本次攻击造成的伤害值
     */
    public int skill(Creature other, String role) {
        int damage = 0;
        switch (role) {
            case "战士":
                damage = attack * 200 - other.defense;
                curHp -= 20;
                other.curHp -= damage;
                break;
            case "游侠":
                damage = attack*20 - other.defense;
                other.curHp -= damage;
            case "术士":
                damage = maxHp*200;
                other.curHp -= damage;
        }
        return damage;
    }

    /**
     * 当前所有状态信息
     * @return 包含了所有信息的字符串
     */
    public String toString() {
        return "『" + name + "』" + ",等级为" + level + "的" + role + "，当前血量" + curHp + "/" + maxHp + "，攻击力" + attack+"，防御值" + defense;
    }

    /**
     * 初始化玩家/敌人，此方法应该在子类中被overridden
     */
    void initialize() {
    }

    public boolean isRoleDead() {
        return curHp <= 0;
    }


//    public String hello() {
//        return "Hello，我是一个生物，Creature！";
//    }
//
//    public String helloWorld() {
//        return "Hello, World!";
//    }
}